﻿using PMS.Core.Configuration.CommonEnumConfigs;
using PMS.Data.Entities.Customers;
using PMS.Data.Entities.NaviMenus;
using PMS.Web.Models.NaviMenus;

namespace PMS.Web.Factories.NaviMenus
{
    /// <summary>
    /// Represents the category model factory
    /// </summary>
    public partial interface INaviMenuModelFactory
    {
        /// <summary>
        /// Prepare NaviMenu search model
        /// </summary>
        /// <param name="searchModel">NaviMenuSearchModel search model</param>
        /// <param name="currentCustomer">current LoginCustomer</param>
        /// <returns>NaviMenuSearchModel</returns>
        NaviMenuSearchModel PrepareNaviMenuSearchModel(NaviMenuSearchModel searchModel, Customer currentCustomer);

        /// <param name="defaultGroup">default value when entity is null</param>
        /// <param name="defaultLanguageCode">default languagecode when entity is null</param>
        /// <returns>NaviMenuEditModel model</returns>
        NaviMenuEditModel PrepareNaviMenuEditModel(NaviMenuEditModel model, NaviMenu entity, bool excludeProperties = false);

        /// <summary>
        /// Prepare paged NaviMenu list model
        /// </summary>
        /// <param name="searchModel">NaviMenu search model</param>
        /// <returns>NaviMenu list model</returns>
        NaviMenuEditListModel PrepareNaviMenuEditListModel(NaviMenuSearchModel searchModel);
    }
}
